package br.com.virtual.recomendar.controller;

import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.virtual.base.controller.util.VirtualMB;
import br.com.virtual.base.uteis.VirtualConstants;
import br.com.virtual.cadastrar.model.Produto;
import br.com.virtual.recomendar.service.AvaliacaoService;
import br.com.virtual.recomendar.service.RecomendadorService;

@ManagedBean
@ViewScoped
public class RecomendarProdutoMB extends VirtualMB implements VirtualConstants {

	private static final long serialVersionUID = 1L;

	private List<Produto> produtosRecomendados;
	
	private boolean recomendar;

	@EJB private RecomendadorService recomendadorService;
	@EJB private AvaliacaoService avaliacaoService;
	
	public List<Produto> getProdutosRecomendados() {

		if (produtosRecomendados == null && isRecomendar()){
			produtosRecomendados = this.recomendadorService
					.gerarRecomendacao(this.autenticacaoService
							.usuarioAutenticado().getPessoa());
		
			if( produtosRecomendados.size() > 15){
				
				for(int i = produtosRecomendados.size() -1; i >= 15; i--)
					produtosRecomendados.remove(i);
			}
		}

		return produtosRecomendados;
	}

	public void setProdutosRecomendados(List<Produto> produtosRecomendados) {
		this.produtosRecomendados = produtosRecomendados;
	}

	public boolean isRecomendar() {
		
		
		if( hasUsuarioAutenticado() && avaliacaoService.hasAvaliacao(getUsuarioLogado().getPessoa()) )
			recomendar = true;
		else recomendar = false;
		
		return recomendar;
	}

	public void setRecomendar(boolean recomendar) {
		this.recomendar = recomendar;
	}

}
